In existing approaches, rules engines use shared memory architecture to process rules. Facts are asserted in the shared memory, causing the rule engine to re-compute the set of active rules, out of which one or more rules are executed at any given time, modifying the set of facts in the shared memory, thus causing the set of active rules to be recomputed, and so on.
Rule-based specification, found both in Rule Management and Complex Event Processing systems, offer a way for enterprise experts and analysts, as well as technical developers and architects to express enterprise logic and implement decision-based services with tools designed for both technical and non-technical users. However, a drawback of existing rule engine architectures includes the fact that using shared memory makes parallelization of enterprise logic expressed as sets of rules very difficult. In existing approaches, using shared memory makes the parallelization process cumbersome to implement, and reduces the utility of adding more resources (machines, memory, etc.) beyond a certain point. This, consequently, decreases the potential scalability of such systems.